using Godot;
using System;

namespace 游戏设定
{
    namespace 枚举
    {
        public enum E角色战斗类型
        {
            玩家,
            队友,
            宠物,
            敌人
        }
        public enum E道具位置
        {
            背包,
            装备栏,
        }
        public enum E道具类型
        {
            装备,
            材料,
            消耗,
            任务
        }
        public enum E装备部位
        {
            武器,
            盔甲,
        }
    }
    namespace 接口
    {
        public interface I角色基础属性
        {
            string 名称 { get; set; }
            float 等级 { get; set; }
        }

        public interface I角色战斗属性
        {
            float 血条上限 { get; set; }
            float 当前血条 { get; set; }
            float 蓝条上限 { get; set; }
            float 当前蓝条 { get; set; }
            float 攻击 { get; set; }
            float 防御 { get; set; }
        }

        public interface I角色模型
        {
            I角色基础属性 基础属性 { get; set; }
            I角色战斗属性 战斗属性 { get; set; }
        }

        public interface I道具模型
        {
            string 唯一码 { get; set; } // 关键属性
            string 名称 { get; set; }
            int 数量 { get; set; }
            bool 可叠加 { get; set; }
            int 叠加上限 { get; set; }
            索引.E道具索引 索引 { get; set; }
            枚举.E道具位置 道具位置 { get; set; }
            枚举.E道具类型 道具类型 { get; set; }
        }

        public interface I装备模型 : I道具模型
        {
            枚举.E装备部位 部位 { get; set; }
        }

    }
    namespace 基类
    {
        public class C角色基础属性 : 接口.I角色基础属性
        {
            public string 名称 { get; set; } = "角色名称";
            public float 等级 { get; set; } = 1;
        }

        public class C角色战斗属性 : 接口.I角色战斗属性
        {
            public float 血条上限 { get; set; } = 0;
            public float 当前血条 { get; set; } = 0;
            public float 蓝条上限 { get; set; } = 0;
            public float 当前蓝条 { get; set; } = 0;
            public float 攻击 { get; set; } = 0;
            public float 防御 { get; set; } = 0;
        }

        public class C角色模型 : 接口.I角色模型
        {
            public 接口.I角色基础属性 基础属性 { get; set; } = new C角色基础属性();
            public 接口.I角色战斗属性 战斗属性 { get; set; } = new C角色战斗属性();
        }

        public class C道具模型 : 接口.I道具模型
        {
            public string 唯一码 { get; set; } = Guid.NewGuid().ToString(); // 关键属性
            public string 名称 { get; set; } = "道具名称";
            public int 数量 { get; set; } = 1;
            public bool 可叠加 { get; set; } = false;
            public int 叠加上限 { get; set; } = 0;
            public 索引.E道具索引 索引 { get; set; }
            public 枚举.E道具位置 道具位置 { get; set; } = 枚举.E道具位置.背包;
            public 枚举.E道具类型 道具类型 { get; set; } = 枚举.E道具类型.任务;
        }

        public class C装备模型 : C道具模型, 接口.I装备模型
        {
            public 枚举.E装备部位 部位 { get; set; } = 枚举.E装备部位.武器;
            // 装备属性 暴击率 准确率
        }
    }
    namespace 索引
    {
        public enum E道具索引
        {
            初始值 = 10000,
            武器,
            盔甲,
        }
        public enum E装备索引
        {
            初始值 = 20000,
            武器,
            盔甲,
        }
    }
}
